Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / scripts / unify-backend-plain-files.sh

Displaying Raw • Download


scripts/unify-backend-plain-files.sh v4.5.0-rc.4 (17844e91) Text, 2.23 KB

T8b949e#!/usr/bin/env bash
T8b949e# Make the two per-arch cx_Freeze backend trees compatible with
T8b949e# @electron/universal's merge requirements:
T8b949e#
T8b949e# 1. Every file must exist in BOTH trees (no unique-to-one-arch files).
T8b949e# 2. Every non-Mach-O file must be byte-identical across trees.
T8b949e#
T8b949e# Python bytecode (.pyc inside library.zip) is architecture-independent;
T8b949e# only timestamps and zip metadata cause SHA differences.
T8b949e#
T8b949e# Native extensions (.so/.dylib) that exist in only one tree are copied
T8b949e# to the other so the file sets match. The copy won't load on the wrong
T8b949e# arch at runtime, but the owning package (e.g. PyYAML) falls back to
T8b949e# its pure-Python implementation, so this is safe.
Tffa657set -euo pipefail

Te6edf3ROOTTff7b72=Ta5d6ff"Tff7b72$(Tffa657cd Ta5d6ff"Tff7b72$(dirname Ta5d6ff"Te6edf3$0Ta5d6ff"Tff7b72)Ta5d6ff/..Ta5d6ff" Tff7b72&& Tffa657pwdTff7b72)Ta5d6ff"

Te6edf3ARM64_DIRTff7b72=Ta5d6ff"Te6edf3$ROOTTa5d6ff/build/exe/darwin-arm64Ta5d6ff"
Te6edf3X64_DIRTff7b72=Ta5d6ff"Te6edf3$ROOTTa5d6ff/build/exe/darwin-x64Ta5d6ff"

Tff7b72if Tff7b72[Tff7b72[ ! -d Ta5d6ff"Te6edf3$ARM64_DIRTa5d6ff" Tff7b72|| ! -d Ta5d6ff"Te6edf3$X64_DIRTa5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"unify-backend: one or both backend dirs missing, skipping"
Tffa657exit T79c0ff0
Tff7b72fi

Te6edf3unifiedTff7b72=T79c0ff0
Te6edf3syncedTff7b72=T79c0ff0

copy_missingTff7b72(Tff7b72) Tff7b72{
Tffa657local Te6edf3src_dirTff7b72=Ta5d6ff"Te6edf3$1Ta5d6ff" Te6edf3dst_dirTff7b72=Ta5d6ff"Te6edf3$2Ta5d6ff" Te6edf3labelTff7b72=Ta5d6ff"Te6edf3$3Ta5d6ff"
Tff7b72while Te6edf3IFSTff7b72= Tffa657read -r -d Ta5d6ff'' relTb4b4b4; Tff7b72do
Te6edf3relTff7b72=Ta5d6ff"Tffd700${Te6edf3relTb4b4b4#./Tffd700}Ta5d6ff"
Tff7b72if Tff7b72[Tff7b72[ ! -f Ta5d6ff"Te6edf3$dst_dirTa5d6ff/Te6edf3$relTa5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
mkdir -p Ta5d6ff"Te6edf3$dst_dirTa5d6ff/Tff7b72$(dirname Ta5d6ff"Te6edf3$relTa5d6ff"Tff7b72)Ta5d6ff"
cp Ta5d6ff"Te6edf3$src_dirTa5d6ff/Te6edf3$relTa5d6ff" Ta5d6ff"Te6edf3$dst_dirTa5d6ff/Te6edf3$relTa5d6ff"
Tffa657echo Ta5d6ff"Ta5d6ff synced (Te6edf3$labelTa5d6ff): Te6edf3$relTa5d6ff"
Te6edf3syncedTff7b72=Tff7b72$((Te6edf3synced Tff7b72+ T79c0ff1Tff7b72))
Tff7b72fi
Tff7b72done < <Tff7b72(Tffa657cd Ta5d6ff"Te6edf3$src_dirTa5d6ff" Tff7b72&& find . -type f -print0Tff7b72)
Tff7b72}

copy_missing Ta5d6ff"Te6edf3$ARM64_DIRTa5d6ff" Ta5d6ff"Te6edf3$X64_DIRTa5d6ff" Ta5d6ff"arm64 -> x64"
copy_missing Ta5d6ff"Te6edf3$X64_DIRTa5d6ff" Ta5d6ff"Te6edf3$ARM64_DIRTa5d6ff" Ta5d6ff"x64 -> arm64"

Tff7b72while Te6edf3IFSTff7b72= Tffa657read -r -d Ta5d6ff'' relTb4b4b4; Tff7b72do
Te6edf3relTff7b72=Ta5d6ff"Tffd700${Te6edf3relTb4b4b4#./Tffd700}Ta5d6ff"
Te6edf3arm64_fileTff7b72=Ta5d6ff"Te6edf3$ARM64_DIRTa5d6ff/Te6edf3$relTa5d6ff"
Te6edf3x64_fileTff7b72=Ta5d6ff"Te6edf3$X64_DIRTa5d6ff/Te6edf3$relTa5d6ff"

Tff7b72[Tff7b72[ -f Ta5d6ff"Te6edf3$x64_fileTa5d6ff" Tff7b72]Tff7b72] Tff7b72|| Tff7b72continue

Tff7b72if cmp -s Ta5d6ff"Te6edf3$arm64_fileTa5d6ff" Ta5d6ff"Te6edf3$x64_fileTa5d6ff"Tb4b4b4; Tff7b72then
Tff7b72continue
Tff7b72fi

Te6edf3filetypeTff7b72=Tff7b72$(file --brief --no-pad Ta5d6ff"Te6edf3$arm64_fileTa5d6ff" T79c0ff2>/dev/null Tff7b72|| Tffa657trueTff7b72)
Tff7b72if Tff7b72[Tff7b72[ Ta5d6ff"Te6edf3$filetypeTa5d6ff" Tff7b72=Tff7b72= Mach-O* Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tff7b72continue
Tff7b72fi

cp Ta5d6ff"Te6edf3$arm64_fileTa5d6ff" Ta5d6ff"Te6edf3$x64_fileTa5d6ff"
Tffa657echo Ta5d6ff"Ta5d6ff unified: Te6edf3$relTa5d6ff"
Te6edf3unifiedTff7b72=Tff7b72$((Te6edf3unified Tff7b72+ T79c0ff1Tff7b72))
Tff7b72done < <Tff7b72(Tffa657cd Ta5d6ff"Te6edf3$ARM64_DIRTa5d6ff" Tff7b72&& find . -type f -print0Tff7b72)

Te6edf3totalTff7b72=Tff7b72$((Te6edf3unified Tff7b72+ Te6edf3syncedTff7b72))
Tff7b72if Tff7b72[Tff7b72[ Te6edf3$total -gt T79c0ff0 Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
Tffa657echo Ta5d6ff"Ta5d6ffunify-backend: synced Te6edf3$syncedTa5d6ff missing file(s), unified Te6edf3$unifiedTa5d6ff differing file(s)Ta5d6ff"
Tff7b72else
Tffa657echo Ta5d6ff"unify-backend: all files already identical and present in both trees"
Tff7b72fi


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────